Soldier is a generic term that refers to someone in an army (army here is in the general meaning and not the US Army branch of the military).
So far so good...
Marine would be a subset of that.
Woops! Marines are a subset of a navy...not an army; They are the naval infantry.
It uses the same symbol for addition and string concatenation, leading to the necessity of ugly hacks like parseInt() that could just as easily be done transparently if the two (conceptually dissimilar) operations had separate symbols.
IMHO, using the same symbol for string concatenation and addition is actually a fairly logical choice that many modern languages implement. The problem is that it allows you to concatenate a string and a number by just converting the number to a string. So 'blah' + 11 gives you 'blah11'. The problem, of course is that if you have input that you expect to be a number but is actually a string representation of a number you may not get what you are expecting ('1' + 1 = '11').
It forces you to pay attention to your data. I hate that.
The fix is coming: https://twitter.com/#!/nddrylliog/status/81798532717228032
err...that tweet says:
Stuck in my hotel with no SSH access, cannot bring http://jsmad.org/ back up. Going to Starbucks.
Wrong kind of fix.
What this country needs is a good five dollar plasma weapon.