revamped operator precedence