Qual a diferença do comando pincel.beginPath();
no código? Pois sem ele o triangulo é desenhado da mesma forma.
<canvas width="600" height="400"></canvas>
<script>
var tela = document.querySelector('canvas');
var pincel = tela.getContext('2d');
pincel.fillStyle = 'lightgrey';
pincel.fillRect(0, 0, 600, 400);
pincel.fillStyle = 'green';
pincel.fillRect(0, 0, 200, 400);
pincel.fillStyle = 'red';
pincel.fillRect(400, 0, 200, 400);
pincel.fillStyle = 'yellow';
pincel.moveTo(300, 200);
pincel.lineTo(200, 400);
pincel.lineTo(400, 400);
pincel.fill();
</script>