ordem de avaliação de subexpressões em uma expressão Java

Eu tenho o seguinte trecho de código:

int x=2,y=3;
if ( (y == x++) | (x < ++y) )
// rest of code

Eu sei que em C ++ você é ensinado a não confiar na ordem de avaliação da subexpressão, porque não é garantido que haja qualquer ordem. Portanto, esse código estaria com erro e o booleano gerado pela expressão na condição não é garantido como verdadeiro (y pode ser incrementado antes de ser avaliado no primeiro teste de igualdade, por exemplo). Como li esse código em um livro de certificação Java, presumo que esse não seja o caso do Java. Quero dizer, garanto que a ordem da avaliação em Java é sempre da esquerda para a direita? Portanto, a expressão acima deve sempre render true.

questionAnswers(1)

yourAnswerToTheQuestion