В каждом языке программирования есть правила, которые определяют порядок выполнения операций в выражениях. Самый простой пример - умножение считается всегда раньше, чем сложение. Скобки могут менять порядок (затем они и нужны), но без скобок работают эти правила.
Чтобы их выяснить, нужно набрать в гугле
"javascript precedence". Советую эту таблицу знать очень хорошо, чтобы считалось, что язык вы знаете.
Погуглив, вы выясните две вещи:
1) Операции > и < имеют одинаковый приоритет.
2) Ассоциативность "left-to-right", то есть слева направо.
Второе означает, что сначала будет посчитано левое выражение 1>1, которое false. А затем результат (false) будет посчитан с правым: false<1, где false автоматически преобразуется в 0.
В качестве тренировки посчитайте на бумажке, используя только таблицу приоритетов операций, такое выражение:
0 / 0 ^ 0 === 0 ? 'a' : 'b';
Решение и ответ, для самопроверки0 / 0 ^ 0 === 0 ? 'a' : 'b';
0 / 0 ^ (0 === 0) ? 'a' : 'b'; // "===" has more priority than "^"
0 / 0 ^ true ? 'a' : 'b';
(0 / 0) ^ true ? 'a' : 'b'; // "/" has more priority than "^"
NaN ^ true ? 'a' : 'b';
NaN ^ 1 ? 'a' : 'b'; //converted to number
1 ? 'a' : 'b'; //for some reason
'a'