为什么该generator代码输出是这样的?

function* demo() {
  let data = 1 || (yield 1);
  console.log(data);
  yield 4;
}
const a = demo();
console.log(a.next()); 
console.log(a.next());
//1
//{value:4,done:false}
//{value:undefined,done:false}

let data = 1 || (yield 1);
这里用到||(或)操作符,由于1等价于true,所以后面的yield 1并没有执行生成产出语句,此时data的值为1,继续往下执行log后就打印出1了。

第一次调用next得到的value是下一句的yield 4

为什么先输出1?