Okay. We have just launched the mathematical model of quantum information. We know that quantum information is represented by qubits which are vectors in two-dimensional Hilbert space. For a system with multiple qubits, for example, with n qubits, the vector will be in a space with dimensionality two in the power n. But for computations, we need more. We need not just to store these qubits, we need also to modify them. So, we need to modify these vectors in Hilbert space. The physicist will tell us that any such modification must be unitary. So, any computations, any program for a quantum computer must be represented by a unitary operator. Let's recall this notion. The unitary operator. It is a linear operator for which it's adjoint operator. It's also inverse. The matrix of an adjoint operator is the conjugate transpose of the matrix of original operator. So, this is our definition of unitary operator. These unitary operators also have a very important feature. They preserve the length of the vectors. So, norm of ux willl be equal to norm of x. They also preserve the inner product, so they preserve angles. If we have xu, uy, and this just x and y, this among with linearity is sufficient for an operator to be unitary. So, if you have some square matrix and we have to check if it implements some unitary operator, we can either check this, or we can check if this operator maps an orthonormal basis to orthonormal basis. Let's see some examples. The orthonormal transform or the familiar name to us. So, this is the matrix for the orthonormal transform, probably the most used operator in quantum computation. H star here is itself. Because we don't have imaginary parts here, so we don't have to conjugate and to transpose is also changing places all this once. Let's multiply our H by H, so it's one-half, one minus one, one multiplied by one plus one multiplied by one. We have two here, and one multiplied by one minus one multiplied by one, zero, and again zero, two. So, it is just matrix of the density operator. So, okay, we can see that H is unitary. Let's see how it acts on our basis zero and one. So, H zero is square root of two, one, one, one minus one, one, zero which is one divided by square root of two, one and one, which is just this vector. The mark plus, and maybe not a surprise to you that H acts on vector one. It gives us other minus. So, the other minus, the lighter the other gets maps our traditional normal basis, zero, one, two, the other mark basis plus minus. Of course, since H is its own inverse, H of plus equals to zero and H of minus equals to one. Another very useful operator which we call X, the matrix you can see on the slide. Let's see how it acts on basis one-zero. So, X-zero is zero one, one zero, one zero, and we have zero here and one here, this one and X of one is again zero, one, one, zero, zero one, and we have one, zero, zero. So, it maps our standard basis zero one to itself, but it flips it. So, this actually the quantum implementation of not operator. Since it maps orthonormal basis to orthonormal basis, we can be sure that it is unitary. The next operator is CNOT, all the previous operators, they're matrices two-by-two, so they acted on the space free of one qubit. This operator acts on a space with two qubits since it is in matrix four by four. Let's see how it acts on our standard four-dimensional basis. So, CNOT of zero, zero, that's this matrix, and this vector. It's actually itself. So, it is again zero, zero. It's zero, one. It will have the same result. It's mapped to zero, one. You can easily check that one, zero will be mapped to one, one by CNOT, and one, one will be mapped to one, zero. So, again, this operator maps orthonormal basis to orthonormal basis, thus, it is unitary, and we can see that it flips the second qubit only if the first qubit is one. So, it is a conditional NOT operator. This bit, the highest bit, is the control bit and this bit is under the control of the controlled bit.