To improve the gameplay experience, the multiplayer engine interpolates between updates for values like X and Y co-ordinates. In the case of positions, it will linearly interpolate between updates. For example if data is coming in every other frame, then the frame which does not receive an update will use a value half way between the two updates either side. This makes the motion smooth again without needing any more data.
The official multiplayer plugin has interpolation built in. You will probably need to implement this yourself if Photon does not have it built in. (I imagine it should, so check Photon documentation on how to handle it)
After interpolation is applied on the peer side, you will want a way to reconciliate any differences from actual synced positions when they become available from the host. These differences can vary due to latency. The official plugin will "fast forward" or "slowdown" the engine based on latency to compensate, which is a more advanced method. A simpler way would just be to adjust/tween the predicted position to the actual position over the course of a multiplayer tick/update.
These concepts are described here construct.net/en/tutorials/multiplayer-tutorial-concepts-579/page-6.
I have no experience with Photon though, so you'll need to find out the equivalent features in Photon. I'm 99% sure Photon has this sort of basic functionality, you'll just need to find out how to use it.