function parseExprOp(left, minPrec, noIn) {
    var prec = tokType.binop;
    if (prec !== null && (!noIn || tokType !== _in)) {
      if (prec > minPrec) {
        var node = startNodeFrom(left);
        node.left = left;
        node.operator = tokVal;
        var op = tokType;
        next();
        node.right = parseExprOp(parseMaybeUnary(), prec, noIn);
        var exprNode = finishNode(node, (op === _logicalOR || op === _logicalAND) ? "LogicalExpression" : "BinaryExpression");
        return parseExprOp(exprNode, minPrec, noIn);
      }
    }
    return left;
  }
Parse binary operators with the operator precedence parsing
algorithm. `left` is the left-hand side of the operator.
`minPrec` provides context that allows the function to stop and
defer further parser to one of its callers when it encounters an
operator that has a lower precedence than the set it is parsing.

@param {!node_t} left
@param {number} minPrec
@param {boolean|undefined} noIn
@returns {!node_t}