Skip to main content

"AND" vs "&&" as operator



Actually, I am facing a codebase where developpers decided to use ' AND ' and ' OR ' instead of ' && ' and ' || '. I know that there is difference in operators precedence ( && goes before ' and '), but with given framework (prestashop to be precise) is clearly not a reason. So, my question: which version are you using? Is ' and ' more readable than ' && '? || there is ~ difference?





Source: Tips4all

Comments

  1. I think there is no specific reason/difference except for the precedence as you said. Programmers are more used to using && instead of and as this is the case in most programming languages. The and and or is more readable and human than && and || but this should not be a problem for programmers. I don't see any particular reason why they are using and and or for their project. I am not sure but there may be something with the speed meaning && and || might be faster than their other counter-parts. Interestingly, this is the case with CodeIgniter (PHP framework) too.

    ReplyDelete
  2. If you use AND and OR, you'll eventually get tripped up by something like this:

    $this = true;
    $that = false;

    $truthiness = $this and $that;


    Want to guess what $truthiness equals?

    If you said false... bzzzt, sorry, wrong!

    $truthiness above has the value true. Why? = has a higher precedence than and. The addition of parentheses to show the implicit order makes this clearer:

    ($truthiness = $this) and $that


    If you used && instead of and in the first code example, it would work as expected and be false.

    ReplyDelete
  3. Depending on how it's being used, it might be necessary and even handy.
    http://php.net/manual/en/language.operators.logical.php

    // "||" has a greater precedence than "or"

    // The result of the expression (false || true) is assigned to $e
    // Acts like: ($e = (false || true))
    $e = false || true;

    // The constant false is assigned to $f and then true is ignored
    // Acts like: (($f = false) or true)
    $f = false or true;


    But in most cases it seems like more of a developer taste thing, like every occurrence of this that I've seen in CodeIgniter framework like @Sarfraz has mentioned.

    ReplyDelete
  4. I guess it's a matter of taste, although (mistakenly) mixing them up might cause some undesired behaviors:

    true && false || false; // returns false

    true and false || false; // returns true


    Hence, using && and || is safer for they have the highest precedence. In what regards to readability, I'd say these operators are universal enough.

    ReplyDelete
  5. which version are you using?


    If the coding standards for the particular codebase I am writing code for specifies which operator should be used, I'll definitely use that. If not, and the code dictates which should be used (not often, can be easily worked around) then I'll use that. Otherwise, probably &&.


    Is 'and' more readable than '&&'?


    Is it more readable to you. The answer is yes and no depending on many factors including the code around the operator and indeed the person reading it!


    || there is ~ difference?


    Yes. See logical operators for || and bitwise operators for ~.

    ReplyDelete
  6. Normally The people who are as Microsoft(VB and .Net) developers always use "AND" and "OR" since it those languages need not to be a Case Sensitive, But the people who are in C, C++, PHP, JAVA are always used "&&" and "||" since those languages are Case Sensitive.

    This is what my taught...

    ReplyDelete
  7. I don't know if there's a precedence difference between && and AND but I really believe that && is faster than AND since it's more "machine language" than AND and lots of other languages don't accept AND or OR logical operators.

    ReplyDelete

Post a Comment

Popular posts from this blog

[韓日関係] 首相含む大幅な内閣改造の可能性…早ければ来月10日ごろ=韓国

div not scrolling properly with slimScroll plugin

I am using the slimScroll plugin for jQuery by Piotr Rochala Which is a great plugin for nice scrollbars on most browsers but I am stuck because I am using it for a chat box and whenever the user appends new text to the boxit does scroll using the .scrollTop() method however the plugin's scrollbar doesnt scroll with it and when the user wants to look though the chat history it will start scrolling from near the top. I have made a quick demo of my situation http://jsfiddle.net/DY9CT/2/ Does anyone know how to solve this problem?

Why does this javascript based printing cause Safari to refresh the page?

The page I am working on has a javascript function executed to print parts of the page. For some reason, printing in Safari, causes the window to somehow update. I say somehow, because it does not really refresh as in reload the page, but rather it starts the "rendering" of the page from start, i.e. scroll to top, flash animations start from 0, and so forth. The effect is reproduced by this fiddle: http://jsfiddle.net/fYmnB/ Clicking the print button and finishing or cancelling a print in Safari causes the screen to "go white" for a sec, which in my real website manifests itself as something "like" a reload. While running print button with, let's say, Firefox, just opens and closes the print dialogue without affecting the fiddle page in any way. Is there something with my way of calling the browsers print method that causes this, or how can it be explained - and preferably, avoided? P.S.: On my real site the same occurs with Chrome. In the ex