Сообщение от рони
			 
		
	 | 
	
		
(mas[y]= mas[y]||{}) && mas[y][x]==1 ?  (delete mas[y][x],!Object.keys(mas[y]).length && delete mas[y],ctx.clearRect(x,y,10,10)) : (mas[y][x]=1,ctx.fillRect(x,y,10,10));
	 | 
	
Можно поподробней вот это место ? Сложновато для меня, 
(mas[y]= mas[y]||{})
если значение [y] в массиве равен самому себе или хоть чему ? 
 
и mas[y][x]==1  - значениям [y] и [x] - присвоена единица, тогда мы 
delete mas[y][x] - удаляем это значение, 
!Object.keys(mas[y]).length - длина массива Y, не понимаю что делает она и восклицательный знак перед ней)))
&& delete mas[y],ctx.clearRect(x,y,10,10))   - и удаляем массив [y] и очищаем этот квадратик
или же если условие не выполняется, мы присваиваем квадратику единичку и заполняем его 
