diff --git a/core/modules/comment/config/install/system.action.comment_delete_action.yml b/core/modules/comment/config/install/system.action.comment_delete_action.yml
index 08f796667e..547ddd3caa 100644
--- a/core/modules/comment/config/install/system.action.comment_delete_action.yml
+++ b/core/modules/comment/config/install/system.action.comment_delete_action.yml
@@ -7,4 +7,5 @@ id: comment_delete_action
 label: 'Delete comment'
 type: comment
 plugin: entity:delete_action:comment
+weight: 0
 configuration: {  }
diff --git a/core/modules/comment/config/install/system.action.comment_publish_action.yml b/core/modules/comment/config/install/system.action.comment_publish_action.yml
index 7a47b2d9e6..35d61038a8 100644
--- a/core/modules/comment/config/install/system.action.comment_publish_action.yml
+++ b/core/modules/comment/config/install/system.action.comment_publish_action.yml
@@ -7,4 +7,5 @@ id: comment_publish_action
 label: 'Publish comment'
 type: comment
 plugin: entity:publish_action:comment
+weight: 0
 configuration: {  }
diff --git a/core/modules/comment/config/install/system.action.comment_save_action.yml b/core/modules/comment/config/install/system.action.comment_save_action.yml
index 614cf4b681..09cc92794c 100644
--- a/core/modules/comment/config/install/system.action.comment_save_action.yml
+++ b/core/modules/comment/config/install/system.action.comment_save_action.yml
@@ -7,4 +7,5 @@ id: comment_save_action
 label: 'Save comment'
 type: comment
 plugin: entity:save_action:comment
+weight: 0
 configuration: {  }
diff --git a/core/modules/comment/config/install/system.action.comment_unpublish_action.yml b/core/modules/comment/config/install/system.action.comment_unpublish_action.yml
index a1800b4a8c..fa251eeeb7 100644
--- a/core/modules/comment/config/install/system.action.comment_unpublish_action.yml
+++ b/core/modules/comment/config/install/system.action.comment_unpublish_action.yml
@@ -7,4 +7,5 @@ id: comment_unpublish_action
 label: 'Unpublish comment'
 type: comment
 plugin: entity:unpublish_action:comment
+weight: 0
 configuration: {  }
diff --git a/core/modules/node/config/install/system.action.node_delete_action.yml b/core/modules/node/config/install/system.action.node_delete_action.yml
index da2d886bf9..7e30e5fd6e 100644
--- a/core/modules/node/config/install/system.action.node_delete_action.yml
+++ b/core/modules/node/config/install/system.action.node_delete_action.yml
@@ -7,4 +7,5 @@ id: node_delete_action
 label: 'Delete content'
 type: node
 plugin: entity:delete_action:node
+weight: -1
 configuration: {  }
diff --git a/core/modules/node/config/install/system.action.node_make_sticky_action.yml b/core/modules/node/config/install/system.action.node_make_sticky_action.yml
index 94a81bf860..39fd7461d5 100644
--- a/core/modules/node/config/install/system.action.node_make_sticky_action.yml
+++ b/core/modules/node/config/install/system.action.node_make_sticky_action.yml
@@ -7,4 +7,5 @@ id: node_make_sticky_action
 label: 'Make content sticky'
 type: node
 plugin: node_make_sticky_action
+weight: -7
 configuration: {  }
diff --git a/core/modules/node/config/install/system.action.node_make_unsticky_action.yml b/core/modules/node/config/install/system.action.node_make_unsticky_action.yml
index 6572963566..6b28163cfd 100644
--- a/core/modules/node/config/install/system.action.node_make_unsticky_action.yml
+++ b/core/modules/node/config/install/system.action.node_make_unsticky_action.yml
@@ -7,4 +7,5 @@ id: node_make_unsticky_action
 label: 'Make content unsticky'
 type: node
 plugin: node_make_unsticky_action
+weight: -6
 configuration: {  }
diff --git a/core/modules/node/config/install/system.action.node_promote_action.yml b/core/modules/node/config/install/system.action.node_promote_action.yml
index 7c45a42db3..019e430287 100644
--- a/core/modules/node/config/install/system.action.node_promote_action.yml
+++ b/core/modules/node/config/install/system.action.node_promote_action.yml
@@ -7,4 +7,5 @@ id: node_promote_action
 label: 'Promote content to front page'
 type: node
 plugin: node_promote_action
+weight: -5
 configuration: {  }
diff --git a/core/modules/node/config/install/system.action.node_publish_action.yml b/core/modules/node/config/install/system.action.node_publish_action.yml
index 3e139bbe6a..80f34b5277 100644
--- a/core/modules/node/config/install/system.action.node_publish_action.yml
+++ b/core/modules/node/config/install/system.action.node_publish_action.yml
@@ -7,4 +7,5 @@ id: node_publish_action
 label: 'Publish content'
 type: node
 plugin: entity:publish_action:node
+weight: -3
 configuration: {  }
diff --git a/core/modules/node/config/install/system.action.node_save_action.yml b/core/modules/node/config/install/system.action.node_save_action.yml
index 1759c35ae2..8cf0eaadca 100644
--- a/core/modules/node/config/install/system.action.node_save_action.yml
+++ b/core/modules/node/config/install/system.action.node_save_action.yml
@@ -7,4 +7,5 @@ id: node_save_action
 label: 'Save content'
 type: node
 plugin: entity:save_action:node
+weight: 0
 configuration: {  }
diff --git a/core/modules/node/config/install/system.action.node_unpromote_action.yml b/core/modules/node/config/install/system.action.node_unpromote_action.yml
index cb290ddcc4..20e4d2a0d8 100644
--- a/core/modules/node/config/install/system.action.node_unpromote_action.yml
+++ b/core/modules/node/config/install/system.action.node_unpromote_action.yml
@@ -7,4 +7,5 @@ id: node_unpromote_action
 label: 'Remove content from front page'
 type: node
 plugin: node_unpromote_action
+weight: -4
 configuration: {  }
diff --git a/core/modules/node/config/install/system.action.node_unpublish_action.yml b/core/modules/node/config/install/system.action.node_unpublish_action.yml
index 0d5e35e9c8..28f34f485c 100644
--- a/core/modules/node/config/install/system.action.node_unpublish_action.yml
+++ b/core/modules/node/config/install/system.action.node_unpublish_action.yml
@@ -7,4 +7,5 @@ id: node_unpublish_action
 label: 'Unpublish content'
 type: node
 plugin: entity:unpublish_action:node
+weight: -2
 configuration: {  }
diff --git a/core/modules/node/tests/src/Functional/Views/BulkFormTest.php b/core/modules/node/tests/src/Functional/Views/BulkFormTest.php
index 894a4602db..cdee0b7030 100644
--- a/core/modules/node/tests/src/Functional/Views/BulkFormTest.php
+++ b/core/modules/node/tests/src/Functional/Views/BulkFormTest.php
@@ -90,6 +90,18 @@ protected function setUp($import_test_views = TRUE) {
     $this->drupalGet('test-node-bulk-form');
     $elements = $this->xpath('//select[@id="edit-action"]//option');
     $this->assertIdentical(count($elements), 8, 'All node operations are found.');
+
+    // Check the node operations order.
+    $order = TRUE;
+    $order = $order && $elements[0]->getValue() == 'node_make_sticky_action';
+    $order = $order && $elements[1]->getValue() == 'node_make_unsticky_action';
+    $order = $order && $elements[2]->getValue() == 'node_promote_action';
+    $order = $order && $elements[3]->getValue() == 'node_unpromote_action';
+    $order = $order && $elements[4]->getValue() == 'node_publish_action';
+    $order = $order && $elements[5]->getValue() == 'node_unpublish_action';
+    $order = $order && $elements[6]->getValue() == 'node_delete_action';
+    $order = $order && $elements[7]->getValue() == 'node_save_action';
+    $this->assertTrue($order, 'All node operations are in proper order.');
   }
 
   /**
diff --git a/core/modules/rest/tests/src/Functional/EntityResource/Action/ActionResourceTestBase.php b/core/modules/rest/tests/src/Functional/EntityResource/Action/ActionResourceTestBase.php
index 76aff4bccd..fa3190f76e 100644
--- a/core/modules/rest/tests/src/Functional/EntityResource/Action/ActionResourceTestBase.php
+++ b/core/modules/rest/tests/src/Functional/EntityResource/Action/ActionResourceTestBase.php
@@ -67,6 +67,7 @@ protected function getExpectedNormalizedEntity() {
       'status' => TRUE,
       'type' => 'user',
       'uuid' => $this->entity->uuid(),
+      'weight' => null,
     ];
   }
 
diff --git a/core/modules/system/config/schema/system.schema.yml b/core/modules/system/config/schema/system.schema.yml
index a6f61b68ed..636b19f6d5 100644
--- a/core/modules/system/config/schema/system.schema.yml
+++ b/core/modules/system/config/schema/system.schema.yml
@@ -258,6 +258,9 @@ system.action.*:
     plugin:
       type: string
       label: 'Plugin'
+    weight:
+      type: integer
+      label: 'Weight'
     configuration:
       type: action.configuration.[%parent.plugin]
 
diff --git a/core/modules/system/src/Entity/Action.php b/core/modules/system/src/Entity/Action.php
index a4128384e2..81276d4c8d 100644
--- a/core/modules/system/src/Entity/Action.php
+++ b/core/modules/system/src/Entity/Action.php
@@ -25,6 +25,7 @@
  *     "label",
  *     "type",
  *     "plugin",
+ *     "weight",
  *     "configuration",
  *   }
  * )
@@ -66,6 +67,13 @@ class Action extends ConfigEntityBase implements ActionConfigEntityInterface, En
    */
   protected $plugin;
 
+  /**
+  +   * The weight of the action.
+  +   *
+  +   * @var int
+  +   */
+  protected $weight;
+
   /**
    * The plugin collection that stores action plugins.
    *
@@ -136,6 +144,15 @@ public function getType() {
     return $this->type;
   }
 
+  /**
+   * Returns the weight of operation.
+   *
+   * @return int
+   */
+  public function getWeight() {
+    return $this->weight;
+  }
+
   /**
    * {@inheritdoc}
    */
diff --git a/core/modules/system/system.install b/core/modules/system/system.install
index 1838326451..695a2fce8d 100644
--- a/core/modules/system/system.install
+++ b/core/modules/system/system.install
@@ -2135,3 +2135,39 @@ function system_update_8501() {
     }
   }
 }
+
+/**
+ * Set weights to actions.
+ */
+function system_update_8601() {
+  // List of node actions.
+  $node_actions_default_weight = [
+    'system.action.node_make_sticky_action' => -7,
+    'system.action.node_make_unsticky_action' => -6,
+    'system.action.node_promote_action' => -5,
+    'system.action.node_unpromote_action' => -4,
+    'system.action.node_publish_action' => -3,
+    'system.action.node_unpublish_action' => -2,
+    'system.action.node_delete_action' => -1,
+    'system.action.node_save_action' => 0,
+  ];
+
+  $config_factory = \Drupal::configFactory();
+
+  // Find all system action configs.
+  foreach ($config_factory->listAll('system.action.') as $action_name) {
+    $action = $config_factory->getEditable($action_name);
+    $data = $action->getRawData();
+
+    // Set appropriate weights to node actions, otherwise set 0 as default
+    // weight for other actions.
+    if (array_key_exists($action_name, $node_actions_default_weight)) {
+      $data['weight'] = $node_actions_default_weight[$action_name];
+    }
+    else {
+      $data['weight'] = 0;
+    }
+    $action->setData($data);
+    $action->save();
+  }
+}
diff --git a/core/modules/user/config/install/system.action.user_block_user_action.yml b/core/modules/user/config/install/system.action.user_block_user_action.yml
index d9753bc59b..1ef190f5d0 100644
--- a/core/modules/user/config/install/system.action.user_block_user_action.yml
+++ b/core/modules/user/config/install/system.action.user_block_user_action.yml
@@ -7,4 +7,5 @@ id: user_block_user_action
 label: 'Block the selected user(s)'
 type: user
 plugin: user_block_user_action
+weight: 0
 configuration: {  }
diff --git a/core/modules/user/config/install/system.action.user_cancel_user_action.yml b/core/modules/user/config/install/system.action.user_cancel_user_action.yml
index cd90ff2ca1..fd4c4a206b 100644
--- a/core/modules/user/config/install/system.action.user_cancel_user_action.yml
+++ b/core/modules/user/config/install/system.action.user_cancel_user_action.yml
@@ -7,4 +7,5 @@ id: user_cancel_user_action
 label: 'Cancel the selected user account(s)'
 type: user
 plugin: user_cancel_user_action
+weight: 0
 configuration: {  }
diff --git a/core/modules/user/config/install/system.action.user_unblock_user_action.yml b/core/modules/user/config/install/system.action.user_unblock_user_action.yml
index 406edb2066..1d11dd7856 100644
--- a/core/modules/user/config/install/system.action.user_unblock_user_action.yml
+++ b/core/modules/user/config/install/system.action.user_unblock_user_action.yml
@@ -7,4 +7,5 @@ id: user_unblock_user_action
 label: 'Unblock the selected user(s)'
 type: user
 plugin: user_unblock_user_action
+weight: 0
 configuration: {  }
diff --git a/core/profiles/testing_config_overrides/config/install/system.action.user_block_user_action.yml b/core/profiles/testing_config_overrides/config/install/system.action.user_block_user_action.yml
index f902ff1a68..99b35e1244 100644
--- a/core/profiles/testing_config_overrides/config/install/system.action.user_block_user_action.yml
+++ b/core/profiles/testing_config_overrides/config/install/system.action.user_block_user_action.yml
@@ -4,6 +4,7 @@ status: true
 langcode: en
 type: user
 plugin: user_block_user_action
+weight: 0
 dependencies:
   module:
     - user
