There is only one case of short-circuiting for each operator, and they are:
false && ... - it is not necessary to know what the right-hand side is because the result can only be false regardless of the value there true || ... - it is not necessary to know what the right-hand side is because the result can only be true regardless of the value there
while работает, пока условие true userNumber != resultNumber в случае угадывания вернет false В таком случае, если компьютер не угадал, то получится false || true, что вернет true