j
[] == ![]
y это объект, при конвертации в boolean объекты это true, с НЕ это false
[] == false
Если y это boolean, то ToNumber(y), это 0
[] == 0
Если x Object а y Number, то ToPrimitive(x), это ""
"" == 0
Если x String а y Number, то ToNumber(x), это 0
0 == 0
Если тип x равен тип y, то строгое сравнение
0 === 0