Why does this return statement return the appropriate strings for each valid condition? Is there something I'm missing about the && operator? It actually returns the "just now" or "1 minute ago" string or any other string that is in the code block and I'm just wondering what the reason is.
return day_diff == 0 && ( diff < 60 && "just now" ||
diff < 120 && "1 minute ago" ||
diff < 3600 && Math.floor( diff / 60 ) + " minutes ago" ||
diff < 7200 && "1 hour ago" ||
diff < 86400 && Math.floor( diff / 3600 ) + " hours ago" ) ||
day_diff == 1 && "Yesterday" ||
day_diff < 7 && day_diff + " days ago" ||
day_diff < 31 && Math.ceil( day_diff / 7 ) + " weeks ago";