Я получил этот простой кусок кода:

var x=10; var y=8; x -= y  = 9; alert(x " and " y); 

Результат будет «-7 и 17».

Почему JavaScript выполняет y = 9 перед x — = y?

Приоритет оператора определяет способ синтаксического анализа операторов по отношению друг к другу. Операторы с более высоким приоритетом становятся операндами операторов с более низким приоритетом

Ассоциативность определяет способ синтаксического анализа операторов одинакового приоритета.

Поскольку -= and = являются ассоциативными справа, поэтому они оцениваются справа налево.

Следовательно, y =9 оценивается первым.

Ссылка Ссылка для операторов