== Why is this an issue? Expressions with arithmetic (``/, {empty}*, %, {plus}{plus}, --, -, -=, {empty}*=, /=, %=, +=, {plus}``), unary (``++-++``), or comparison operators (``++>, <, >=, <=++``) where one, or both, of the operands is a String, Boolean or Date value rely on implicit conversions. Both the maintainability and reliability levels of such a piece of code are questionable. === Noncompliant code example [source,javascript] ---- str = "80"; quarter = str / 4; // Noncompliant if (str < 10) { // Noncompliant // ... } ---- === Compliant solution [source,javascript] ---- str = "80"; parsedStr = parseInt(str); quarter = parsedStr / 4; if (parsedStr < 10) { // ... } ---- === Exceptions * Expressions using the binary ``{plus}`` operator with at least one ``++String++`` operand are ignored because the ``{plus}`` operator will perform a concatenation in that case. * Comparisons where both operands are strings are ignored because a lexicographical comparison is performed in that case. ifdef::env-github,rspecator-view[] ''' == Implementation Specification (visible only on this page) === Message Convert this operand into a number. === Highlighting Primary: non numerical operand ''' == Comments And Links (visible only on this page) === on 18 Oct 2016, 10:59:01 Pierre-Yves Nicolas wrote: The current title of the rule seems rather vague to me. Shouldn't it mention "arithmetic and comparison expressions"? === on 18 Oct 2016, 13:09:38 Ann Campbell wrote: \[~jeanchristophe.collet], please reword title into canonical form (x should [not] y) endif::env-github,rspecator-view[]