Мне не понятно как в этом примере массив преобразуется в число.
console.log(10 - [4]); //6
Насколько я знаю, при попытке преобразования операнда к примитивному типу данных запускается либо toString(), либо valueOf(). По умолчанию valueOf() возвращает сложный тип данных, а toString() преобразовывает сложный тип данных к строке. Как, к примеру, это происходит здесь:
console.log([4] + 10); //"410"
Как в первом примере массив мог преобразоваться в число, если по умолчанию valueOf() возвращает массив?