Matemática de inteiros com JavaScript
O JavaScript tem uma fama de ter um problema sério com conversões numéricas. A mais notável das contradições é que todos os números na linguagem são, por padrão, floats com precisão decimal, então todas as operações sobre números inteiros são primeiro convertidos de um double de 64 bits para um inteiro de 32 e ai convertido de volta para o double original (pelo menos conceitualmente).
A dica aqui é que, quando você for fazer operações com inteiros, adicione | 0
após o calculo se o seu número puder ser negativo e >>> 0
se ele só for positivo. Isso vai fazer uma operação bitwise convertendo forçadamente o número para inteiro e poupando algum tempo.
Visite Para saber mais