Operador ternário, erro de sintaxe ao usar atribuição

As seguintes 3 linhas de código abaixo compilar OK. (Observe que esse código é um exemplo de "codificação Java artificial" e, conseqüentemente, não seria visto em código escrito profissionalmente.)

int x, y;
boolean b=true;

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

Se eu agora alterar o código na linha 3 acima, de modo que pareça com a seguinte linha de código abaixo, o compilador gerará um erro.

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

Aqui está a mensagem de erro de sintaxe:

Alguém pode explicar esse comportamento (para um aprendiz Java novato)? Obrigado.

questionAnswers(4)

yourAnswerToTheQuestion