diff --git a/CHANGELOG.md b/CHANGELOG.md
index 7e4e6c5..deb481b 100644
--- a/CHANGELOG.md
+++ b/CHANGELOG.md
@@ -7,6 +7,7 @@ Notable changes to this project are documented in this file. The format is based
 Breaking changes:
 
 New features:
+- Add `mergeFlipped` and infix operator `//`
 
 Bugfixes:
 
diff --git a/src/Record.purs b/src/Record.purs
index 11154ca..5fc9692 100644
--- a/src/Record.purs
+++ b/src/Record.purs
@@ -1,18 +1,21 @@
 module Record
-  ( get
-  , set
-  , modify
-  , insert
+  ( (//)
+  , class EqualFields
   , delete
-  , rename
+  , disjointUnion
   , equal
+  , equalFields
+  , get
+  , insert
   , merge
-  , union
-  , disjointUnion
+  , mergeFlipped
+  , modify
   , nub
-  , class EqualFields
-  , equalFields
-  ) where
+  , rename
+  , set
+  , union
+  )
+  where
 
 import Prelude
 
@@ -168,6 +171,27 @@ merge
   -> Record r4
 merge l r = runFn2 unsafeUnionFn l r
 
+-- | Like `merge` but with its arguments flipped. I.e. merges two records with the seconds record's labels taking precedence in the
+-- | case of overlaps.
+-- |
+-- | For example:
+-- |
+-- | ```purescript
+-- | mergeFlipped { x: 1, y: "y" } { y: 2, z: true }
+-- |  :: { x :: Int, y :: Int, z :: Boolean }
+-- | ```
+mergeFlipped
+  :: forall r1 r2 r3 r4
+   . Union r1 r2 r3
+  => Nub r3 r4
+  => Record r2
+  -> Record r1
+  -> Record r4
+mergeFlipped = flip merge
+
+-- | Operator alias for mergeFlipped (right-associative / precedence 1)
+infixr 1 mergeFlipped as //
+
 -- | Merges two records with the first record's labels taking precedence in the
 -- | case of overlaps. Unlike `merge`, this does not remove duplicate labels
 -- | from the resulting record type. This can result in better inference for
diff --git a/test/Main.purs b/test/Main.purs
index 124f3cd..5fdb26e 100644
--- a/test/Main.purs
+++ b/test/Main.purs
@@ -3,7 +3,7 @@ module Test.Main where
 import Prelude
 
 import Effect (Effect)
-import Record (delete, equal, get, insert, merge, modify, rename, set)
+import Record (delete, equal, get, insert, merge, modify, rename, set, (//))
 import Record.Builder as Builder
 import Record.Unsafe (unsafeHas)
 import Test.Assert (assert')
@@ -33,6 +33,8 @@ main = do
     not $ equal { a: 1, b: "b", c: true } { a: 1, b: "b", c: false }
   assert' "merge" $
     equal { x: 1, y: "y" } (merge { y: "y" } { x: 1, y: 2 })
+  assert' "mergeFlipped" $
+    equal { x: 1, y: "y", z: true } ({ x: 1, y: 2 } // { y: "y" } // { z: true })
   assert' "unsafeHas1" $
     unsafeHas "a" { a: 42 }
   assert' "unsafeHas2" $