understand operator precedence