Skip to main content

You are not logged in. Your edit will be placed in a queue until it is peer reviewed.

We welcome edits that make the post easier to understand and more valuable for readers. Because community members review edits, please try to make the post substantially better than how you found it, for example, by fixing grammar or adding additional resources and hyperlinks.

Required fields*

Required fields*

Should I fully parenthesize expressions or rely on precedence rules?

Let's say I have a boolean condition a AND b OR c AND d and I'm using a language where AND has a higher order of operation precedence than OR. I could write this line of code:

If (a AND b) OR (c AND d) Then ...

But really, that's equivalent to:

If a AND b OR c AND d Then ...

Are there compelling arguments in favor or against including the extraneous parentheses?
Does practical experience suggest that including them significantly improves readability?
Or is wanting them a sign that a developer really needs to sit down and become conversant in the basics of their language?

Answer*

Cancel
11
  • 2
    "This is very uncommon": According to Stroustrup2013, C++11 seems to have different precedence of AND and OR (p. 257). Same for Python: docs.python.org/2/reference/expressions.html
    – Dirk
    Commented Jun 11, 2013 at 19:26
  • 12
    Re: "Every language I know treat AND and OR equally": I doubt that's true. If it is true, then you don't know any of the ten most popular languages (C, Java, C++, PHP, JavaScript, Python, C#, Perl, SQL, and Ruby), and are in no position to be commenting on what is "uncommon", let alone "very uncommon".
    – ruakh
    Commented Jun 11, 2013 at 19:34
  • 1
    I agree with ruakh and looked it up for C++11, python, matlab and java.
    – Dirk
    Commented Jun 11, 2013 at 19:36
  • 3
    Languages in which AND and OR are binary operators, and which do not treat AND as having a higher precedence than OR, are braindamaged crap whose authors are computer science flunkies. This comes from logic notation. Hello, does "sum of products" not mean anything? There is even a boolean notation which uses multiplication (juxtaposition of factors) for AND, and the + symbol for OR.
    – Kaz
    Commented Jun 12, 2013 at 7:53
  • 3
    @ruakh You just made my point for me. Because there are a handful of pathological edge cases doesn't mean that you shouldn't learn standard Boolean precedence and assume it holds until proven otherwise. We're not talking about arbitrary design decisions here; Boolean algebra was invented long before computers. Also, show me the Pascal spec you're talking about. Here and here show AND before OR. Commented Jun 12, 2013 at 19:51