Потому, что оператор &&
вычисляет слева направо каждый из своих операндов. Результат вычисление операнда приводится к булевому типу и если он true, переходит к вычислению следующего операнда. Операция повторяется до тех пор, пока результат вычисления очередного операнда не будет false, если это так, то возвращается результат вычисления данного операнда и цепочка обрывается.
Все операнды истины, значит цепочка дойдет до конца и вернет 5
1 && 2 && 3 && 4 && 5 // 5
В цепочке есть ложный операнд, значит он и вернется, а цепочка вычислений на нем закончится
1 && 2 && 0 && 4 && 5 // 0
Цепочка завершится на том операнде для которого вы ответите отрицательно, последующие операнды не будут выполяться
confirm(1) && confirm(2) && confirm(3)
Для оператора ||
похожая картина. Отличие в том, что цепочка операндов будет выполняться до первого истинного операнда
1 || 2 || 3 || 4 || 5 // 1
0 || false || !!0 || 5 || true || !!1 //5
Цепочка будет выполнятся до тех пор, пока вы не ответите истинно
confirm(1) || confirm(2) || confirm(3)
Т.е. по сути &&
и ||
не возвращают true или false. Они возвращают результат вычисления одного из своих операндов.