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

Why is this Javascript much *slower* than its jQuery equivalent?

I have a HTML list of about 500 items and a "filter" box above it. I started by using jQuery to filter the list when I typed a letter (timing code added later): $('#filter').keyup( function() { var jqStart = (new Date).getTime(); var search = $(this).val().toLowerCase(); var $list = $('ul.ablist > li'); $list.each( function() { if ( $(this).text().toLowerCase().indexOf(search) === -1 ) $(this).hide(); else $(this).show(); } ); console.log('Time: ' + ((new Date).getTime() - jqStart)); } ); However, there was a couple of seconds delay after typing each letter (particularly the first letter). So I thought it may be slightly quicker if I used plain Javascript (I read recently that jQuery's each function is particularly slow). Here's my JS equivalent: document.getElementById('filter').addEventListener( 'keyup', function () { var jsStart = (new Date).getTime()...

Is it possible to have IF statement in an Echo statement in PHP

Thanks in advance. I did look at the other questions/answers that were similar and didn't find exactly what I was looking for. I'm trying to do this, am I on the right path? echo " <div id='tabs-".$match."'> <textarea id='".$match."' name='".$match."'>". if ($COLUMN_NAME === $match) { echo $FIELD_WITH_COLUMN_NAME; } else { } ."</textarea> <script type='text/javascript'> CKEDITOR.replace( '".$match."' ); </script> </div>"; I am getting the following error message in the browser: Parse error: syntax error, unexpected T_IF Please let me know if this is the right way to go about nesting an IF statement inside an echo. Thank you.