порядок вычисления подвыражений в выражении Java

У меня есть следующий фрагмент кода:

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

Я знаю, что в C ++ вас учат не полагаться на порядок вычисления подвыражений, потому что это вовсе не гарантировано. Таким образом, этот код будет ошибочным, и булево значение, полученное выражением в условии, не гарантируется как истинное (например, y можно увеличить до того, как оно будет оценено в первом тесте на равенство). Поскольку я читал этот код в книге по сертификации Java, я предполагаю, что с Java это не так. Я имею в виду, гарантирую ли я, что порядок вычисления в Java всегда слева направо? Таким образом, приведенное выше выражение должно всегда давать истину.