You must know about Operator priority in Java. I translate your sentences based Java grammar to understand better. It is helpful to read about parsers in compilers and grammars which used to parse them.
/*------------------------------*/
x++==x;
//line1 equals to
xl = x; x++; xr = x; xl == xr; //xl=99; xr=100
/*------------------------------*/
++x==x;
//line2 equals to
++x; xl = x; xr = x; xl == xr; //xl=100; xr=100
/*------------------------------*/
x==x++;
//line3 equals to
xl = x; xr = x; x++; xl == xr; //xl=99; xr=99;
/*------------------------------*/
x==++x;
//line4 equals to
xl = x; ++x; xr = x; xl == xr; //xl=99; xr=100;
/*------------------------------*/
++x==++x;
//line5 equals to
++x; xl = x; ++x; xr = x; xl == xr; //xl=100; xr=101;
/*------------------------------*/
x++==x++;
//line6 equals to
xl = x; x++; xr = x; x++; xl == xr; //xl = 99; xr = 100;
/*------------------------------*/
++x==x++;
//line7 equals to
++x; xl = x; xr = x; x++; xl == xr; //xl = 100; xr = 100;
/*------------------------------*/
x++==++x;
//line7 equals to
xl = x; x++; ++x; xl == xr; //xl = 99; xr = 101;
/*------------------------------*/
The following is an example grammar and you can see in equalityExpression which left expression and right expression is calculated before comparison.
primaryExpression
: Identifier
| Constant
| StringLiteral+
| '(' expression ')'
;
postfixExpression
:
( primaryExpression )
('[' expression ']'
| ('++' | '--')
)*
;
unaryExpression
:
('++' | '--' )*
(postfixExpression
| unaryOperator castExpression
)
;
unaryOperator
: '&' | '*' | '+' | '-' | '~' | '!'
;
castExpression
: unaryExpression
;
multiplicativeExpression
: castExpression (('*'|'/'|'%') castExpression)*
;
additiveExpression
: multiplicativeExpression (('+'|'-') multiplicativeExpression)*
;
shiftExpression
: additiveExpression (('<<'|'>>') additiveExpression)*
;
relationalExpression
: shiftExpression (('<'|'>'|'<='|'>=') shiftExpression)*
;
equalityExpression
: relationalExpression (('=='| '!=') relationalExpression)*
;