Q:

Unfamiliar variable assignment with parenthesis and commas

Why does assigning values with parenthesis like this only evaluate to the last value 
 var a = (1, 2, 5 - 1); //4

It also seems to require the parenthesis
var a = 1, 5 - 1; //SyntaxError: Unexpected number

A:

The , symbol has several similar but distinctly different roles in JavaScript syntax.   In a var declaration, the comma separates variable declaration clauses.  In an expression, however, the comma "operator" provides a way to stuff several expressions together in a form that is syntactically equivalent to a single expression.  That's somewhat useful in certain rare cases. 
Thus, the parentheses make a difference here because without them, the parser expects each comma-separated clause to be a variable declaration and (optional) initialization.  With the parentheses, the right-hand side of the initialization is a single expression, syntactically, even though it's three separate unrelated expressions connected by the comma operator. 
The comma operator in expressions is arguably useful when there's a situation that involves syntax that allows for a single expression, but you really want to use more than one.  The best example is the third clause in a for loop header.   If you need to increment two separate variables, then it (may) be clearer to do that in the loop header; however, there's only provision for one expression.  Thus the comma operator lets you cheat:
for (var a = 0, b = 1; a < limit; a++, b = something(b)) {
  // ...
}

Note that the comma in the first clause of the for header is not the comma operator; it's the comma that separates variable declaration clauses. ( I guess some people might still use the term "comma operator" for that, but my point is that it's not separating a list of expressions.)