implemented operator precedence