function needParenthesis (node, parenthesis, implicit) {
    const precedence = getPrecedence(node, parenthesis, implicit)
    const exprPrecedence = getPrecedence(node.expr, parenthesis, implicit)

    return (parenthesis === 'all') ||
      ((exprPrecedence !== null) && (exprPrecedence <= precedence))
  }
Is parenthesis needed?
@param {Node} node
@param {Object} parenthesis
@param {string} implicit
@private