Тернарный оператор, синтаксическая ошибка при использовании присваивания

Следующие 3 строки кода ниже компилируют ОК. (Обратите внимание, что этот код является примером «искусственного кодирования Java» и, следовательно, не будет встречаться в профессионально написанном коде.)

int x, y;
boolean b=true;

x = b ? y=1 : 2;  // Compiles OK.

Если я сейчас изменю код в строке № 3 выше, чтобы он выглядел как следующая строка кода ниже, компилятор выдаст ошибку.

// Change the position of the "y assignment", and now the code doesn't compile.
x = b ? 1 : y=2;  

Вот сообщение об ошибке синтаксиса:

Может кто-нибудь объяснить, пожалуйста, это поведение (новичку в изучении Java)? Спасибо.

Ответы на вопрос(4)

Ваш ответ на вопрос