console.log( 5 === 5 && 3 > 1 || 5);
оператор ИЛИ возвращает последнюю правду, а по факту дает True, а не 5. Ведь 5 в этом контексте тоже true
||
возвращает первую правду. И дальше не проверяет. Т.е. 3 > 1 === true
||
приоритет ниже ↓, чем у &&
↑. Очерёдность выполнения: 5 === 5 && 3 > 1 || 5
(5 === 5 && 3 > 1) || 5
// && проверит, чтобы все были true
// и вернёт последний, т.е. вернёт 3 > 1 === true
// || увидит, что уже есть true и вернёт его, не проверяя 5
console.log(true && 5); // 5
console.log(false && 5); // false
console.log(true || 5); // true
console.log(false || 5); // 5