Посмотрите на этот пример вызовов функций.
a.push(['test'])(function() {alert('poop')})()
Выглядит знакомо? Вот как компилятор / интерпретатор просматривает ваш код.
Деталь
Вот часть грамматики, используемой для описания выражений вызова.
CallExpression :
	MemberExpression Arguments
	CallExpression Arguments
	CallExpression [ Expression ]
	CallExpression . IdentifierName
По существу каждая группа (...) рассматривается как Аргументы к исходному MemberExpression a.push
.
a.push (['test']) // MemberExpression Arguments
(function() {alert('poop')}) // Arguments
() // Arguments
или более формально
CallExpression(
CallExpression(
CallExpression(
MemberExpression( a.push ),
Arguments( (['test']) )
),
Arguments( (function() {alert('poop')}) )
),
Arguments( () )
)