Даже далёкие от программирования вообще и JS в частности люди наверняка встречали картинки, подобные этой:
Результаты математических операций с разными типами данных для людей не очень близко знакомых с джаваскриптом порой выглядят странно и превращаются в мемы. Вот ещё один пример кода, дающий неожиданный результат:
null > 0 // false;
null == 0 // false
null >= 0 // true
Выражение "null больше либо равен нулю" - истинно, тогда как выражения "null равен нулю" и "null больше нуля" - ложные. На первый взгляд это выглядит как наркоманский бред. Разгадка проста - нестрогое равенство и сравнения >, < используют разный алгоритм приведения типов. При использования оператора "==" null ни к чему не приводится и равен только самому себе и undefined, а при использовании операторов >, <, >=, <= null преобразуется в 0, т.е. после приведения типов получается следующая конструкция:
0 > 0 // false, действительно 0 не больше 0
null == 0 // false, null не равен ничему, кроме себя и undefined
0 >= 0 // true, а это правда, 0 равен 0
Всё очень просто и логично.